/*
 * 人人信用管理有限公司版权所有.
 * 
 * @Description:
 * 
 * @author: liyuliang
 * 
 * @date: 20 Apr 2017 10:44:16 am
 * 
 * 注意：本内容仅限于人人信用管理有限公司内部传阅，禁止外泄以及用于其他的商业目的.
 */

package com.rrx360.common.context;

import org.apache.commons.lang.reflect.MethodUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * 加载context的main方法
 * 
 * @author liyuliang
 *
 */
public class ContextMain {

  public static final Logger logger = LogManager.getLogger(ContextMain.class);

  /**
   * 第一个参数为配置文件路径，以逗号分隔 第二个参数为执行的beanName 第三个参数为执行的方法名 以后参数为方法的参数
   * 
   * @param args
   */
  public static void main(String[] args) throws Exception {
    String[] configFiles = args[0].split(",");
    String beanName = args[1];
    String methodName = args[2];
    String[] methodArgs = new String[args.length - 3];
    System.arraycopy(args, 3, methodArgs, 0, args.length - 3);

    ContextUtil.load(configFiles);
    Object bean = ContextUtil.getBean(beanName);
    if (bean == null) {
      logger.error("no bean with name :" + beanName);
      return;
    }
    try {
      MethodUtils.invokeMethod(bean, methodName, methodArgs);
    } catch (NoSuchMethodException e) {
      logger.info("invoke by args array");
      MethodUtils.invokeMethod(bean, methodName, new Object[] {methodArgs});
    }

  }
}
